/*

Miranda IM: the free IM client for Microsoft* Windows*

Copyright 2000-2007 Miranda ICQ/IM project, 
all portions of this codebase are copyrighted to the people 
listed in contributors.txt.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or ( at your option ) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
aLONG with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/
#ifndef _SVCREMINDER_H_
#define _SVCREMINDER_H_

namespace NServices
{
	namespace Reminder 
	{
		#define POPUP_TYPE_BIRTHDAY     1
		#define POPUP_TYPE_ANNIVERSARY  2

		// for PopupDelayType
		#define POPUP_DELAY_DEFAULT     3
		#define POPUP_DELAY_CUSTOM			4
		#define POPUP_DELAY_PERMANENT   5

		// for PopupColorType
		#define POPUP_COLOR_DEFAULT     6
		#define POPUP_COLOR_WINDOWS     7
		#define POPUP_COLOR_CUSTOM      8

		#define SOUND_BIRTHDAY_TODAY	"Birthday"
		#define SOUND_BIRTHDAY_SOON		"BirthdayComing"
		#define SOUND_ANNIVERSARY			"Anniversary"

		// databbase settings
		#define SET_REMIND_LASTCHECK								"RemindLastCheck"
		#define SET_REMIND_ENABLED                  "RemindEnabled"
		#define SET_REMIND_OFFSET										"RemindOffset"
		#define SET_REMIND_CHECKVISIBLE							"RemindCheckVisible"
		#define SET_REMIND_NOTIFYINTERVAL           "RemindNotifyInterval"
		#define SET_REMIND_FLASHICON								"RemindFlashIcon"
		#define SET_REMIND_EXTRAICON								"RemindExtraIcon"
		#define SET_REMIND_BIRTHMODULE							"RemindBirthModule"
		#define SET_REMIND_MENUENABLED              "RemindMenuEnabled"
		#define SET_REMIND_BIRTHDAY_ENABLED         "RemindBirthday"
		#define SET_REMIND_BIRTHDAY_OFFSET          "RemindBirthdayOffset"
		#define SET_REMIND_CHECKON_STARTUP					"RemindStartupCheck"
		#define SET_REMIND_SECUREBIRTHDAY						"RemindSecureBirthday"
		#define SET_REMIND_BIRTHDAY_IGNORED					"RemindSecureIgnored"
		#define SET_REMIND_SOUNDOFFSET							"RemindSoundOffset"
		#define SET_POPUP_ENABLED										"PopupEnabled"
		#define SET_POPUP_BIRTHDAY_COLORTYPE        "PopupBirthClrType"
		#define SET_POPUP_BIRTHDAY_COLOR_TEXT       "PopupBirthClrBirthText"
		#define SET_POPUP_BIRTHDAY_COLOR_BACK       "PopupBirthClrBirthBack"
		#define SET_POPUP_ANNIVERSARY_COLORTYPE     "PopupAnnivClrType"
		#define SET_POPUP_ANNIVERSARY_COLOR_TEXT    "PopupAnnivClrText"
		#define SET_POPUP_ANNIVERSARY_COLOR_BACK    "PopupAnnivClrBack"
		#define SET_POPUP_DELAY                     "PopupDelay"

		// default values
		#define DEFVAL_REMIND_ENABLED					NServices::Reminder::REMIND_ALL
		#define DEFVAL_REMIND_MENUENABLED			1
		#define DEFVAL_REMIND_OFFSET					9
		#define DEFVAL_REMIND_SOUNDOFFSET			3
		#define DEFVAL_REMIND_NOTIFYINTERVAL	12
		#define DEFVAL_REMIND_BIRTHMODULE			0
		#define DEFVAL_POPUP_ENABLED					1
		#define DEFVAL_REMIND_CHECKVISIBLE		0
		#define HM_OPENMSG	( WM_USER+1 )

		/**
		 * typedefs:
		 **/
		enum EEnabled 
		{
			REMIND_OFF,
			REMIND_BIRTH,
			REMIND_ANNIV,
			REMIND_ALL,
		};

		enum ENotify 
		{
			NOTIFY_CLIST,		// notify with clist extra icon only
			NOTIFY_POPUP,		// notify with popup and clist extra icon
			NOTIFY_NOANNIV		// notify of no anniversary was found
		};
		
		/**
		 * Global functions:
		 **/
		VOID		CheckAll						( const ENotify notify );
		LPCSTR	GetMyBirthdayModule	( VOID );

		VOID	OnTopToolBarLoaded		( VOID );
		VOID	OnToolBarLoaded				( VOID );
		VOID	OnModulesLoaded				( VOID );

		VOID	Enable								( BOOLEAN bEnable );
		VOID	LoadModule						( VOID );
		VOID	UnloadModule					( VOID );

	} /* namespace Reminder */

} /* namespace NServices */

#endif /* _SVCREMINDER_H_ */
